package com.xing.binbackend.pattern.responsibility.ecommerce.product;


import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

/**
 * 责任链模式可以将每个验证逻辑封装到一个独立的处理器中，每个处理器负责单一的验证职责，符合单一职责原则。
 * 「责任链模式的作用」：
 * 用于动态处理请求，将多个处理逻辑串联起来。
 * 「策略模式的作用」：
 * 用于封装一组算法，使得可以在运行时动态选择需要的算法。
 * 结合两者：
 * 责任链模式负责「串联和传递请求」，而策略模式定义了每一个处理者的「具体处理逻辑」。
 */
//商品上架逻辑
// 责任链执行入口
@Service
@RequiredArgsConstructor
public class Client {
    private final MerchantAdminChainContext<ProductUpShelfReqDTO> merchantAdminChainContext;

    public void upShelfProduct(ProductUpShelfReqDTO requestParam) {
        // 调用责任链进行校验
        merchantAdminChainContext.handler(
                ChainBizMarkEnum.MERCHANT_ADMIN_PRODUCT_UPSHELF_KEY.name(),
                requestParam
        );
        System.out.println("商品上架逻辑开始执行...");
        // 后续的商品上架业务逻辑
    }
}
